package com.jrx.anytxn.customer.mapper.ext;

import com.jrx.anytxn.customer.entity.CmCustomerAddressInfo;
import com.jrx.anytxn.customer.mapper.base.CmCustomerAddressInfoMapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
/**
 * 自定义客户地址表mapper
 * @author Qingyao Xing
 * @date 2019/9/27 14:55
 */
public interface ExtCmCustomerAddressInfoMapper extends CmCustomerAddressInfoMapper {
    /**
     *  批量添加客户地址表
     * @param addresses 客户地址信息集合
     * @return int 添加成功数目
     * @author Qingyao Xing
     * @date 2019/9/27 14:52
     */
    int batchInsertSelective(@Param("list") List<CmCustomerAddressInfo> addresses);

    /**
     * 修改客户地址表信息
     * @param cond
     * @return
     */
    int updateByCondSelective(CmCustomerAddressInfo cond);
    /**
     *  查询客户地址表信息
     *  @param cond 查询条件的地址信息对象
     * @return java.util.List<com.jrx.anytxn.customer.entity.CmCustomerAddressInfo> 查询的客户地址信息集合
     * @author Qingyao Xing
     * @date 2019/9/27 14:54
     */
    List<CmCustomerAddressInfo> selectByCondSelective(@Param("cond") CmCustomerAddressInfo cond);


    /**
     * 根据客户id，租户 查询
     * @param customerId
     * @param tenantId
     * @return
     */
    List<CmCustomerAddressInfo> selectByCustomerIdAndTenantId(@Param("customerId") String customerId,@Param("tenantId") String tenantId );


    /**
     * 根据客户id，渠道，租户 查询
     * @param customerId
     * @param channel
     * @param tenantId
     * @return
     */
    List<CmCustomerAddressInfo> selectByCustomerIdAndTenantIdAndChannel(@Param("customerId") String customerId,@Param("tenantId") String tenantId,@Param("channel") String channel );

    /**
     * 统计客户地址信息的数量
     *
     * @return int
     */
    int selectCountForBatch();

    /**
     * 根据修改时间查询客户地址信息
     * @param startTime
     * @return
     */
    List<CmCustomerAddressInfo> selectByUpdateTime(@Param("startTime") String startTime);


    void batchInsert(List<CmCustomerAddressInfo> list);

    CmCustomerAddressInfo selectByCustomerIdAndAddressType(String customerId,String addressType);

    /**
     * 根据客户id更新时间渠道地址类型查询地址信息
     *
     * @param tenantId 租户id
     * @param customerId 客户id
     * @param updateTime 更新时间
     * @param channels 渠道
     * @param addressTypes 地址类型
     * @return List
     */
    List<CmCustomerAddressInfo> selectByCustomerIdAndUpdateTime(@Param("tenantId") String tenantId, @Param("customerId") String customerId, @Param("updateTime") Date updateTime, @Param("channels") List<String> channels, @Param("addressTypes") List<String> addressTypes);
}
